package com.devops.admin.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.devops.admin.model.DOSClusterNamespace;
import com.devops.admin.model.TableResult;
import com.devops.admin.vo.DOSClusterNamespaceVo;
import com.devops.admin.vo.DOSPageVo;
import io.fabric8.kubernetes.client.KubernetesClient;

import java.util.List;

/**
 * @ClassNem DOSClusterNamespaceService
 * @Description TODO
 * @Author heyabo
 * @Date 2022/3/18 11:32
 * @Version 1.0
 **/
public interface DOSClusterNamespaceService extends IService<DOSClusterNamespace> {

    /**
     * @Author heyabo
     * @Description 根据集群id查询命名空间
     * @Date 11:38 2022/3/18
     * @Param [clusterId]
     * @return java.util.List<com.devops.admin.model.DOSClusterNamespace>
     **/
    TableResult<DOSClusterNamespace> getByClusterId(DOSClusterNamespace namespace, DOSPageVo pageVo);

    /**
     * @Author heyabo
     * @Description 根据集群id查询命名空间
     * @Date 11:38 2022/3/18
     * @Param [clusterId]
     * @return java.util.List<com.devops.admin.model.DOSClusterNamespace>
     **/
    List<DOSClusterNamespace> getByClusterId(List<Integer> clusterId);

    /**
     * @Author heyabo
     * @Description 根据集群id查询命名空间
     * @Date 11:38 2022/3/18
     * @Param [clusterId]
     * @return java.util.List<com.devops.admin.model.DOSClusterNamespace>
     **/
    List<DOSClusterNamespace> getByClusterId(int clusterId);

    /**
     * @Author heyabo
     * @Description 根据名称获取命名空间
     * @Date 16:36 2022/3/18
     * @Param [namespace]
     * @return java.util.List<com.devops.admin.model.DOSClusterNamespace>
     **/
    TableResult<DOSClusterNamespace> getNamespaceByName(DOSClusterNamespaceVo namespace, DOSPageVo pageVo);

    /**
     * @Author heyabo
     * @Description 添加集群命名空间
     * @Date 11:25 2022/7/25
     * @Param [namespace]
     * @return com.devops.admin.model.DOSClusterNamespace
     **/
    DOSClusterNamespace saveNamespace(DOSClusterNamespace namespace);

    /**
     * @Author heyabo
     * @Description 更新命名空间
     * @Date 11:27 2022/7/25
     * @Param [namespace]
     * @return java.lang.Boolean
     **/
    Boolean updateByNamespaceId(DOSClusterNamespace namespace);

    /**
     * @Author heyabo
     * @Description 根据集群id获取命名空间
     * @Date 10:04 2022/8/23
     * @Param [clusterId]
     * @return com.devops.admin.model.TableResult<com.devops.admin.model.DOSClusterNamespace>
     **/
    List<DOSClusterNamespace> getNamespaces(Integer clusterId);

    /**
     * getClients
     * @param clusterId 集群id
     * @return io.fabric8.kubernetes.client.KubernetesClient
     * @author jxt
     * @date 2024/8/13 18:05
     */
    KubernetesClient getClients(int clusterId);
}
